При работе в окне диспетчера пакетов вы можете устанавливать пакеты из нескольких источников (реестр, локальный папка или архив и URL Git). Однако, несмотря на то, что диспетчер пакетов без проблем устанавливает пакеты из этих источников, сначала он должен выполнить ряд вычислений, чтобы решить, какую версию установить, а также какие другие пакеты и версии установить для ее поддержки.
Выбирая версию пакета для установки в окне диспетчера пакетов, вы добавляете зависимость
См. Словарь для вашего манифест проектаКаждый проект Unity имеет манифест проекта, который действует как точка входа для пакета Управляющий делами. Этот файл должен находиться в каталоге
. Диспетчер пакетов использует его для настройки многих вещей, включая список зависимостей для этого проекта, а также любой репозиторий пакетов для запроса пакетов. Подробнее
См. в Словарь. Это заявление о том, что вам нужна определенная версия определенного пакета для работы проекта. Зависимости, которые появляются в вашем манифесте проекта, называются "прямыми" зависимостями.
Для работы пакетов также могут потребоваться другие пакеты. Они называются «косвенными» или транзитивными зависимостями. Разработчик пакета добавляет эти зависимости в манифест пакета во время разработки. Например, на диаграмме ниже пакет alembic@1.0.7
зависит от пакета timeline@1.0.0
. , поэтому пакет временной шкалы является «косвенной» зависимостью. С другой стороны, проект зависит от пакетов cinemachine@2.6.0
и alembic@1.0.7
, поэтому те оба являются «прямыми» зависимостями.
Когда вы добавляете версию пакета в качестве зависимости, эта версия не обязательно является версией, которую устанавливает диспетчер пакетов, поскольку он должен учитывать все зависимости в вашем проекте, как прямые, так и косвенные. Чтобы решить, какие пакеты устанавливать, диспетчер пакетов составляет список всех прямых и косвенных зависимостей.
Диспетчер пакетов может устанавливать только одну версию пакета за раз, поэтому он должен построить график зависимостей, чтобы определить, какую версию каждого пакета установить. Когда диспетчер пакетов успешно разрешает все конфликты версий, он сохраняет разрешение в файле блокировки для обеспечения детерминизма (чтобы каждый раз надежно устанавливались одни и те же пакеты), и сократить время и ресурсы, необходимые для повторного вычисления графа зависимостей.